﻿using MesErreurs;
using MySql.Data.MySqlClient;
using Persistance;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Metier
{
    public class Vendeur
    {
        //Definition des attributs
        private String noVendeur;
        private String noVendeurChef;
        private String nomVendeur;
        private String prenomVendeur;
        private String dateEmbauche;
        private String villeVendeur;
        private float salaireVendeur;
        private float commission;
        //Definition des properties

        public String NoVendeur
        {
            get { return noVendeur; }
            set { noVendeur = value; }
        }
        
        public String NoVendeurChef
        {
            get { return noVendeurChef; }
            set { noVendeurChef = value; }
        }

        public String NomVendeur
        {
            get { return nomVendeur; }
            set { nomVendeur = value; }
        }

        public String PrenomVendeur
        {
            get { return prenomVendeur; }
            set { prenomVendeur = value; }
        }

        public String DateEmbauche
        {
            get { return dateEmbauche; }
            set { dateEmbauche = value; }
        }

        public float Commission
        {
            get { return commission; }
            set { commission = value; }
        }

        public String VilleVendeur
        {
            get { return villeVendeur; }
            set { villeVendeur = value; }
        }

        public float SalaireVendeur
        {
            get { return salaireVendeur; }
            set { salaireVendeur = value; }
        }

        //Constructeurs
        public Vendeur()
        {
            noVendeur = "";
            noVendeurChef = "";
            nomVendeur = "";
            prenomVendeur = "";
            dateEmbauche = "";
            villeVendeur = "";
            salaireVendeur = 0;
            commission = 0;
        }
        public Vendeur(string no, string noC, string nom, string prenom, string date, string ville, float salaire, float com)
        {
            noVendeur = no;
            noVendeurChef = noC;
            nomVendeur = nom;
            prenomVendeur = prenom;
            dateEmbauche = date;
            villeVendeur = ville;
            salaireVendeur = salaire;
            commission = com;
        }

        //Traitement de la classe Vendeur
        /// <summary>
        /// Lire un utilisateur sur son ID
        /// </summary>
        /// <param name="id_utilisateur">N° de l'utilisateur à lire</param>
        public List<String> LectureNoVendeur( )
        {
            List<String> mesNumeros = new List<String>();
            DataTable dt;
            sErreurs er = new sErreurs("Erreur sur lecture du Vendeur.", "Utilisateur.lectureVendeur()");
            try
            {
                String mysql = "SELECT DISTINCT NO_Vendeur FROM Vendeur ORDER BY NO_Vendeur";
                dt = DbInterface.Lecture(mysql, er);
                foreach (DataRow dataRow in dt.Rows)
                {
                    mesNumeros.Add((dataRow[0]).ToString());
                }
                return mesNumeros;
            }
            catch (MySqlException e)
            {
                throw new MonException(er.MessageUtilisateur(), er.MessageApplication(),
                e.Message);
            }
        }

        public Vendeur RechercheUnVendeur(String numCli)
        {
            String mysql;
            DataTable dt;
            sErreurs er = new sErreurs("Erreur sur recherche d'un vendeur.", "Vendeur.rechercherVendeur()");
            try
            {
                mysql = "SELECT NO_Vend_Chef_Eq, NOM_Vend, PRENOM_Vend,";
                mysql += "DATE_EMBAU, VILLE_VEND, SALAIRE_VEND, COMMISSION ";
                mysql += "FROM Vendeur WHERE NO_Vendeur=':numero'";
                // On se protège de l’injection sql
                mysql = mysql.Replace(":numero", numCli);
                // On appelle la couche Persistance
                dt = DbInterface.Lecture(mysql, er);
                if (dt.IsInitialized)
                {
                    DataRow dataRow = dt.Rows[0];
                    this.noVendeur = numCli;
                    this.nomVendeur = dataRow[1].ToString();
                    this.noVendeurChef = dataRow[0].ToString();
                    this.prenomVendeur = dataRow[2].ToString();
                    this.dateEmbauche = dataRow[3].ToString();
                    this.villeVendeur = dataRow[4].ToString();
                    this.salaireVendeur = Convert.ToSingle(dataRow[5]);
                    this.commission = Convert.ToSingle(dataRow[6]);
                    return this;
                }
                else return null;
            }
            catch (MySqlException e)
            {
                throw new MonException(er.MessageUtilisateur(), er.MessageApplication(),
                e.Message);
            }
        }
    }
}
